use serde::{Deserialize, Serialize};

use super::Align;

#[derive(Debug, PartialEq, Eq, Clone, Serialize, Deserialize)]
pub struct TableProps {
    /** 是否显示 */
    #[serde(default = "true_default")]
    pub display: bool,
    /** 是否过滤 */
    #[serde(default)]
    pub filter: bool,
    /** 是否可以排序 */
    #[serde(default)]
    pub sorter: bool,
    /** 是否过长省略 */
    #[serde(default)]
    pub ellipsis: bool,
    /** 是否编辑 */
    #[serde(default)]
    pub edit: bool,
    /** 是否固定 */
    #[serde(default)]
    pub fixed: bool,
    /** 对齐方式 */
    #[serde(default)]
    pub align: Align,
    /** 宽度：单位px */
    #[serde(default = "width_default")]
    pub width: u16,
    /** 格式化 */
    #[serde(default)]
    pub format: Option<String>,
}
impl Default for TableProps {
    fn default() -> Self {
        TableProps {
            display: true,
            filter: true,
            sorter: true,
            ellipsis: true,
            edit: true,
            fixed: false,
            align: Align::default(),
            width: width_default(),
            format: None,
        }
    }
}
fn true_default() -> bool {
    true
}
fn width_default() -> u16 {
    120
}